<template>
  <div style="margin: 20px">
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
      <el-alert
      title="步道乐跑手机号"
      type="success"
      :closable="false">
      </el-alert>

      <el-form-item label="手机号" prop="phone">
        <el-input size="small" v-model="form.phone"></el-input>
      </el-form-item>

      <el-form-item v-if="status" label="验证码" prop="code">
        <el-input size="small" v-model="form.code"></el-input>
      </el-form-item>

      <el-form-item>
        <el-button v-if="!status" size="small" @click="lepaoSendSmsCode">获取验证码</el-button>
        <el-button v-else size="small" @click="lepaoLogin">登录</el-button>
      </el-form-item>

    </el-form>
  </div>
</template>

<script>
import { lepaoLogin, lepaoGetCode } from "@/api/run";
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》'

export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  props: {},
  data() {
    //这里存放数据
    const validatePhone = (rule, value, callback) => {
      if (
        !/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$/.test(
          value
        )
      ) {
        callback(new Error("请输入正确的手机号"));
      } else {
        callback();
      }
    };

    const validateCode = (rule, value, callback) => {
      if (!/^\d{6}$/.test(value)) {
        callback(new Error("6位数验证码"));
      } else {
        callback();
      }
    };

    return {
      status: false,
      form: { phone: "", code: "" },
      rules: {
        phone: [{ required: true, trigger: "blur", validator: validatePhone }],
        code: [{ required: true, trigger: "blur", validator: validateCode }],
      },
    };
  },
  //计算属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    lepaoSendSmsCode() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          lepaoGetCode({ phone: this.form.phone })
            .then((data) => {
              this.tips(`${data.info}`,"success");
              this.status = true;
            })
            .catch((err) => {this.$message.error(err.message)});
        } else {
          return false;
        }
      });
    },
    lepaoLogin() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          lepaoLogin({ phone: this.form.phone, msgCode: this.form.code })
            .then((data) => {
              if (data.access_token !== undefined ) {

                this.tips(`欢迎回来：${data.name}`,"success");
                this.$store.dispatch('user/setImg',data.img);
                setTimeout(() => {
                  this.$router.push('/lepaotiyu/index');
                }, 1000);
              }
            })
            .catch((err) => {this.$message.error(err.message)});
        } else {
          return false;
        }
      });
    },

    tips(title,type) {
      this.$message({
        message: title,
        type: type,
      });
    },
  },
  //声明周期 - 创建完成（可以访问当前this实例）
  created() {},
  //声明周期 - 挂载完成（可以访问DOM元素）
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发
};
</script>
<style scoped>
</style>